package bootstrap

import (
	"context"
	"devops-dcc/pkg/notifier"
	"fmt"
	"time"
)

func InitNotifier() (notifier.Notifier, error) {
	// 确保配置已加载
	if cfg == nil {
		return nil, fmt.Errorf("配置未初始化")
	}

	// 如果未启用通知或测试模式，返回Mock
	if !cfg.Notifier.WechatWork.Enabled || cfg.App.Env == "test" {
		return notifier.NewMockNotifier(), nil
	}

	// 验证必要配置
	if cfg.Notifier.WechatWork.Webhook == "" {
		return nil, fmt.Errorf("企业微信webhook不能为空")
	}

	// 创建实例
	ww := notifier.NewWechatWork(
		cfg.Notifier.WechatWork.Webhook,
		cfg.Notifier.Timeout,
	)

	// 测试连接（可选）
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()
	if err := ww.Send(ctx, "通知系统初始化测试"); err != nil {
		return nil, fmt.Errorf("企业微信通知测试失败: %w", err)
	}

	return ww, nil
}
